@scream
2年前 提问
1个回答

理想的WAF应该具备哪些功能

齐士忠
2年前

理想的WAF应该具备以下这些功能:

  • 上下文理解能力:传统WAF对于HTTP协议的理解主要是单向处理请求或者应答,缺乏对HTTP整个session行为的分析,缺乏结合上下文综合理解请求应答内容的能力,这好比盲人摸象,对于问题分析很片面。比如盲注这类没有明显回显特征的,仅依赖请求包特征,不去分析整个session多个应答包的时间特征就很难准确发现。

  • 语义分析能力:语义分析,部分厂商称之为沙箱,本质上是WAF具备语义识别常见的SQL、PHP、shell语言的能力,传统WAF的规则多是基于正则,说白了就是从文本的角度去理解HTTP协议,按简单的正则匹配,好比用鸟的大脑去尝试理解人类的语言,结果肯定是误报率和漏报率无法平衡。有了语义理解能力以后,就可以从HTTP载荷中提取的疑似可执行代码段,用语义去理解是否可以执行。

  • 审计取证能力:能够以HTTP会话作为存储单位,保存至少一个月的存储日志,完整记录请求应答内容,至少包括请求和应答的前4兆内容,支持基于常见HTTP字段的正则查询,支持ELK那种基础的聚合、TOP、大于、小于等操作。

  • 情报能力:威胁情报这两年一直比较火,也逐渐从概念层面过渡到实战,从IP地址库、HTTP代理库、VPN库进步到真正是肉鸡库等,这一进步也给WAF带来了新的武器,对于大面积机器攻击行为,比如CC/DDoS肉鸡等可以做到直接封禁。

  • 业务安全防护能力:业务安全的防护范围非常广,我认为至少包括网站内容防护,反恶意抓取、垃圾信息注入、黄赌毒信息注入、主页篡改(这个对党政军用户至关重要)等。高级业务逻辑CC攻击,对API接口的海量调用,包括短信接口、验证码接口、登录接口、数据查询接口等,撞库也可以算作此类。轻量级防薅羊毛、暴力注册、刷红包、刷代金券等。

  • 协同能力:这个能力我认为很重要,因为WAF不是万金油,也不可能包打天下,再强大也可能被绕过,但是WAF的卡位很好,位于网路边界,特别适合做隔离操作,比如hids发现WebShell,协同WAF阻断访问,数据库审计发现拖库或者敏感操作协同WAF阻断(这个还依赖WAF和数据库联动分析,将HTTP会话和SQL操作关联)等。